package com.qzsoft.zhjd.materiel.modules.materielapi.service;

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.qzsoft.zhjd.materiel.modules.materielapi.dto.MaterielItemBindDto;
import com.qzsoft.zhjd.materiel.modules.materielapi.dto.MaterielItemUnbindDto;
import com.qzsoft.zhjd.materiel.modules.materielapi.dto.MaterielItemUpdateDto;
import com.qzsoft.zhjd.materiel.modules.materielapi.dto.MaterielItemViewDto;
import com.qzsoft.zhjd.materiel.modules.materielapi.dto.PlatformDataSendDto;
import com.qzsoft.zhjd.materiel.modules.materielapi.dto.SupplierAndProjectSaveDto;
import com.qzsoft.zhjd.materiel.modules.materielapi.dto.SupplierAndProjectViewDto;
import com.qzsoft.zhjd.materiel.modules.materielapi.dto.SysUserViewDto;
import com.qzsoft.zhjd.materiel.modules.materielapi.dto.WeightDataType;
import com.qzsoft.zhjd.materiel.modules.materieldata.entity.MaterielDataEntity;

/**
 * @ClassName MaterielApiService
 * @Description 地磅客户端业务接口
 * @author linhuawei
 * @since 2022-04-05
 */
public interface MaterielApiService {

    /**
     * @Title getCooperates
     * @Description 获取供应商信息
     * @param baseCode 基地编号
     * @return 供应商信息
     */
    public List<SupplierAndProjectViewDto> getCooperates(String baseCode);

    /**
     * @Title saveCooperates
     * @Description 添加供应商
     * @param dto 供应商信息
     */
    public void saveCooperates(SupplierAndProjectSaveDto dto);

    /**
     * @Title getProjectList
     * @Description 获取项目信息
     * @param baseCode 基地编号
     * @return 项目信息
     */
    public List<SupplierAndProjectViewDto> getProjectList(String baseCode);

    /**
     * @Title saveProject
     * @Description 添加项目
     * @param dto 项目信息
     */
    public void saveProject(SupplierAndProjectSaveDto dto);

    /**
     * @Title getOperators
     * @Description 获取操作用户列表
     * @param baseCode 基地编号
     * @return 用户信息
     */
    public List<SysUserViewDto> getOperators(String baseCode);

    /**
     * @Title getItemList
     * @Description 获取基地材料字典
     * @param baseCode 基地编号
     * @return 基地材料字典
     */
    public List<MaterielItemViewDto> getItemList(String baseCode);

    /**
     * @Title getUnbindItemList
     * @Description 获取未绑定材料列表
     * @param baseCode 基地编号
     * @return 未绑定材料列表
     */
    public List<MaterielItemUnbindDto> getUnbindItemList(String baseCode);

    /**
     * @Title bindItem
     * @Description 绑定材料
     * @param dto
     * @return
     */
    public List<String> bindItem(MaterielItemBindDto dto);

    /**
     * @Title updateItem
     * @Description 更新材料
     * @param list 要更新的材料列表
     */
    public void updateItem(List<MaterielItemUpdateDto> list);

    /**
     * @Title getWeightType
     * @Description 获取称重类型
     * @return 称重类型
     */
    public List<WeightDataType> getWeightType();

    /**
     * @Title saveMaterielData
     * @Description 保存磅单数据
     * @param dto  磅单数据
     * @param file 图片文件
     * @return 保存结果
     */
    public void saveMaterielData(PlatformDataSendDto dto, MultipartFile[] file);
    
    /**
     * @Title getMaterielData
     * @Description 获取改变的地磅数据
     * @param weightCode 地磅编号
     * @return 改变的地磅数据
     */
    public List<MaterielDataEntity> getMaterielData(String weightCode);
}
